package com.zhanghe.study.mapreduce.wordcount;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * Map阶段
 * @author zh
 * @date 2021/3/27 22:21
 */
// 泛型中的含义
    //1.输入数据key的类型
    //2.输入数据value的类型
    //3.输出数据key的类型
    //4.输出数据value的类型
public class WordCountMapper extends Mapper<LongWritable, Text, Text,IntWritable> {
    // 输出的key
    Text text = new Text();
    // 输出的value
    IntWritable intWritable = new IntWritable(1);


    // 每个kv对都会进入该方法
    // 用来处理业务逻辑
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        // 读取一行的数据
        String line = value.toString();
        // 使用空格切割单词
        String[] words = line.split(" ");
        // 遍历单词
        for(String word : words){

            text.set(word);

            context.write(text,intWritable);
        }
    }
}
